home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 026a / clrshow.zip / CLRSHOW.PRG
Text File  |  1991-04-12  |  19KB  |  676 lines

  1. * ╔═══════════════════════════════════════════════════════════════════╗
  2. * ║ Program.: CLRSHOW.PRG                                             ║
  3. * ║ Author..: Phil Steele - President Phillipps Computer Systems Inc. ║
  4. * ║ Address.: 52 Hook Mountain Road,  Montville NJ 07045              ║
  5. * ║ Phone...: (201) 575-8575                                          ║
  6. * ║ Date....: June 25, 1990                                           ║
  7. * ║                                                                   ║
  8. * ║ Notice..: Copyright 1990  Philip Steele                           ║
  9. * ║           Placed into the public domain by Phil Steele  Sept. 1990║
  10. * ║                                                                   ║
  11. * ║ Version.: dBASE IV release 1.1                                    ║
  12. * ╚═══════════════════════════════════════════════════════════════════╝
  13. * Note -- I copied and extracted these routines from Phil Steele's
  14. * PCSDEMO.PRG routine. I wanted something so I could figure out
  15. * color combinations -- this one works. It writes the colors to
  16. * disk as a MEM file, which can be restored in any program, and then 
  17. * the appropriate color combinations can be used with:
  18. * RESTORE FROM COLOR ADDITIVE
  19. * SET COLOR OF xxx TO &COxxx.  && see language reference & var names below
  20. *  (I also added a few comments here and there ...)
  21. * Handy.  Ken Mayer
  22.  
  23.  
  24. *─────────
  25. * PREAMBLE
  26. *─────────
  27. CLEAR ALL
  28. SET STEP    OFF
  29. SET ECHO    OFF
  30. SET TALK    OFF
  31. SET BELL    OFF
  32. SET PRINT   OFF
  33. SET CLOCK   OFF
  34. SET DELETE  ON
  35. SET STATUS  OFF
  36. SET SAFETY  OFF
  37. SET ESCAPE  OFF
  38. SET CONFIRM ON
  39. SET HEADING OFF
  40. SET SCOREBOARD OFF
  41. SET DISPLAY TO EGA25
  42. SET DEVICE  TO SCREEN
  43. SET CURSOR  OFF
  44.  
  45.  
  46. *────────────────
  47. * STANDARD COLORS
  48. *────────────────
  49. IF FILE("COLOR.MEM")
  50.    RESTORE FROM COLOR ADDITIVE
  51. ELSE                                   && If COLOR.MEM Does not exist
  52.    Cl         = ISCOLOR()              && create it
  53.    ColBlank   = "N/N,N/N,N"
  54.    ColFunc    = "N/W"
  55.    ColOther   = IIF(Cl, "BG+/B"        , "W+/N")
  56.    ColHelp    = IIF(Cl, "N/G,N/W,B"    , "W+/N,N/W,N")
  57.    ColData    = IIF(Cl, "RG+/B,N/W,B"  , "W+/N,N/W,N")
  58.    ColError   = IIF(Cl, "W+/R,W+/N,B"  , "W/N,N/W,N")
  59.    ColEntry   = IIF(Cl, "N/W,W+/N,B"   , "N/W,W+/N,N")
  60.    ColStand   = IIF(Cl, "W+/B,N/W,B"   , "W+/N,N/W,N")
  61.    ColMenu    = IIF(Cl, "RG+/R,RG+/N,B", "W+/N,N/W,N")
  62.    ColWarning = IIF(Cl, "N/BG,W+/N,B"  , "W/N,N/W,N")
  63.    SAVE TO COLOR ALL LIKE COL*
  64. ENDIF
  65.  
  66.  
  67. *───────────────
  68. * MISC CONSTANTS
  69. *───────────────
  70. Esc      = CHR(27)
  71.  
  72. *──────────────
  73. * KEY CONSTANTS        && this is handy for the use of INKEY(x)
  74. *──────────────
  75. Key      = 0 && General purpose key variable
  76. EndKey   = 2
  77. PgDn     = 3
  78. CurRight = 4
  79. CurUp    = 5
  80. Del      = 7
  81. Tab      = 9
  82. Enter    = 13
  83. PgUp     = 18
  84. CurLeft  = 19
  85. CInsert  = 22
  86. CtrlW    = 23
  87. CtrlEnd  = 23
  88. CurDn    = 24
  89. CtrlY    = 25
  90. Home     = 26
  91. Escape   = 27
  92. F1Key    = 28
  93. CtrlHome = 29
  94. CtrlPgDn = 30
  95. CtrlPgUp = 31
  96. Space    = 32
  97. F2Key    = -1
  98. F3Key    = -2
  99. F4Key    = -3
  100. F5Key    = -4
  101. F6Key    = -5
  102. F7Key    = -6
  103. F8Key    = -7
  104. F9Key    = -8
  105. F10Key   = -9
  106. BackTab  = -400
  107. AltL     = -424
  108.  
  109. *───────────────
  110. *PROCEDURE COLORS
  111. *───────────────
  112. *╔═══════════════════════════════════════════╗
  113. *║         LISTING OF COLOR.MEM              ║
  114. *║                                           ║
  115. *║  ColFunc    = "N/W"                       ║
  116. *║  ColBlank   = "N/N,N/N,B"                 ║
  117. *║  ColHelp    = "N/G,N/W,B"                 ║
  118. *║  ColData    = "RG+/B,N/W,B"               ║
  119. *║  ColError   = "W+/R,W+/R,B"               ║
  120. *║  ColEntry   = "N/W,W+/N,B,B"              ║
  121. *║  ColStand   = "W+/B,N/W,B"                ║
  122. *║  ColMenu    = "RG+/R,RG+/N,B"             ║
  123. *║  ColWarning = "N/BG,W+/N,B"               ║
  124. *╚═══════════════════════════════════════════╝
  125.  
  126. DO WHILE .T.
  127.    Dummy = BOXES(14,6,23,21,.F., "S", ColMenu)
  128.    @ 15,12 SAY "MENU"
  129.    @ 16,7  TO 16,20 DOUBLE
  130.    @ 16,6  SAY "╞"
  131.    @ 16,21 SAY "╡"
  132.    SET BORDER  TO NONE
  133.    SET MESSAGE TO
  134.    DEFINE POPUP ColChoice FROM 16, 7
  135.    DEFINE BAR 1 OF ColChoice PROMPT "1. Background"
  136.    DEFINE BAR 2 OF ColChoice PROMPT "2. Data   "
  137.    DEFINE BAR 3 OF ColChoice PROMPT "3. Help   "
  138.    DEFINE BAR 4 OF ColChoice PROMPT "4. Menu   "
  139.    DEFINE BAR 5 OF ColChoice PROMPT "5. Warning "
  140.    DEFINE BAR 6 OF ColChoice PROMPT "6. Return "
  141.    mChoice = 0
  142.    ON SELECTION POPUP ColChoice DO PopSel WITH mChoice
  143.    SET BORDER TO SINGLE
  144.    ACTIVATE POPUP ColChoice
  145.    IF mChoice = 0 .OR. mChoice = 6
  146.       EXIT
  147.    ELSE
  148.       DO CLRS WITH mChoice
  149.    ENDIF
  150. ENDDO
  151. SET MESSAGE TO " " AT 23,0
  152. set cursor on
  153. RETURN
  154. *END:COLORS
  155.  
  156. *─────────────────────────────────────────────────────────────────────────
  157. * U S E R   D E F I N E D   F U N C T I O N S    &   P R O C E D U R E S *
  158. *─────────────────────────────────────────────────────────────────────────
  159.   * this gets used in the procedures below
  160. *─────────────
  161. FUNCTION BOXES
  162. *─────────────
  163. PARAMETERS T, L, B, R, Shadow, SD, BC
  164. PRIVATE    T, L, B, R, Shadow, SD, BC, Kind
  165. DO CASE
  166.    CASE SD = "D"
  167.       Kind = "DOUBLE"
  168.    CASE SD = "S"
  169.       Kind = " "
  170.    CASE SD = "N"
  171.       Kind = "NONE"
  172. ENDCASE
  173. IF Shadow                               && With or without a drop shadow
  174.    @ T+1,L+1 FILL TO B+1,R+2 COLOR N+/N && T,L,B,R = Corners of the box
  175. ENDIF                                   && Shadow = .T. or .F.
  176. SET COLOR TO &BC                        && SD = SIngle or Double line box
  177. @ T,L CLEAR TO B,R                      && BC = Color of the box
  178. @ T,L       TO B,R &Kind
  179. RETURN(.T.)
  180. *END:BOXES
  181.  
  182.   * I don't think this one gets used here, but I left it in since it was
  183.   * an intriguing function. <g>
  184. *───────────────
  185. FUNCTION MESSBOX
  186. *───────────────
  187. PARAMETERS Line, Mess, Shadow, SD, BC
  188. PRIVATE    Line, Mess, Shadow, SD, BC, Kind,;
  189.    SCol, MLen, T, L, B, R
  190. MLen  = LEN(Mess)                      && Line = Line to put the message
  191. SCol  = (80 - MLen) / 2                && Mess = Message to display
  192. T     = Line - 1                       && Shadow = .T. or .F. indicating
  193. L     = SCol-2                         &&          if a shadow is needed
  194. B     = Line + 1                       && SD = Single or Double line box
  195. R     = SCol + MLen + 2                && BC = Box color
  196. Dummy = BOXES(T, L, B, R, Shadow, SD, BC)
  197. SET COLOR TO &BC
  198. @ Line, SCol SAY Mess
  199. RETURN(.T.)
  200. *END:MESSBOX
  201.  
  202.     * same can be said for this -- it's not used, but it's interesting.
  203. *────────────
  204. FUNCTION WBOX
  205. *────────────
  206. PARAMETERS WName,T, L, B, R, SD, Shadow, BColor
  207. DEFINE WINDOW &WName FROM T,L TO B,R NONE COLOR &BColor
  208. BB = B - T
  209. BR = R - L
  210. IF Shadow
  211.   SName = "S" + WName
  212.   DEFINE WINDOW &SName FROM T+1,L+1 TO B+1,R+2;
  213.                 NONE COLOR N+,N,N
  214.   ACTIVATE WINDOW &SName
  215. ENDIF
  216. ACTIVATE WINDOW &WName
  217. DO CASE
  218.    CASE SD = "D"
  219.       Kind = "DOUBLE"
  220.    CASE SD = "S"
  221.       Kind = " "
  222.    CASE SD = "N"
  223.       Kind = "NONE"
  224. ENDCASE
  225. SET COLOR TO &BColor
  226. @ 0,0 TO BB,BR &Kind
  227. RETURN(.T.)
  228. *END:WBOX
  229.  
  230.     * and again. 
  231. *────────────
  232. FUNCTION MBOX                          && Draw a menu box on the screen
  233. *────────────
  234. PARAMETERS S, T, B, Shadow, SD, BC, Mess
  235.  
  236. PRIVATE L, R, Kind
  237. L = (78 - S) / 2                       &&  ┌──────┐    ╔══════╗
  238. R = L + S + 1                          &&  │ MESS │    ║ MESS ║
  239. Dummy = BOXES(T,L,B,R,Shadow,SD,BC)    &&  ╞══════╡    ╟──────╢
  240. SET COLOR TO &BC                       &&  │      │    ║      ║
  241. IF SD = "S"                            &&  │      │    ║      ║
  242.    @ T+2,L+1 TO T+2,R-1 DOUBLE         &&  │      │    ║      ║
  243.    @ T+2,L SAY "╞"                     &&  └──────┘    ╚══════╝
  244.    @ T+2,R SAY "╡"                     && S = Width of centered box
  245. ELSE                                   && T & B = Top and Bottom lines
  246.    @ T+2,L+1 TO T+2,R-1                &&         for the box
  247.    @ T+2,L SAY "╟"                     && Shadow = .T. or .F.
  248.    @ T+2,R SAY "╢"                     && SD = Single or Double lines
  249. ENDIF                                  && BC = Color of the box
  250. Dummy = CENT(T+1,80,Mess)              && Mess = Message for the top of
  251. RETURN(.T.)                            &&        the box
  252. *END:MBOX
  253.  
  254.  
  255. *───────────────
  256. PROCEDURE POPSEL
  257. *───────────────
  258. PARAMETERS mVar
  259. mVar = BAR()
  260. DEACTIVATE POPUP
  261. RETURN
  262. *END:POPSEL
  263.  
  264.  
  265. *───────────────
  266. PROCEDURE PADSEL
  267. *───────────────
  268. YN = VAL(SUBSTR(PAD(), 2))
  269. DEACTIVATE MENU
  270. RETURN
  271. *END:PADSEL
  272.  
  273. *--------------------------------------------------------------------
  274. * This is where we get into the really interesting stuff ...
  275. *--------------------------------------------------------------------
  276.  
  277. *─────────────
  278. PROCEDURE CLRS
  279. *─────────────
  280. PARAMETERS BDHMW    && Background,Data,Help,Menu,Warning (BDHMW)
  281. IF BDHMW > 5
  282.    RETURN
  283. ENDIF
  284. Pass = 1
  285. DECLARE mColArray[16]
  286. RESTORE FROM COLOR ADDITIVE
  287. mColArray [ 1] = "W+"    && bright white
  288. mColArray [ 2] = "W"        && white
  289. mColArray [ 3] = "RG+"    && yellow
  290. mColArray [ 4] = "RG"    && brown
  291. mColArray [ 5] = "RB+"    && bright magenta
  292. mColArray [ 6] = "RB"    && magenta
  293. mColArray [ 7] = "R+"    && pink ("light" red)
  294. mColArray [ 8] = "R"        && red
  295. mColArray [ 9] = "GB+"    && light cyan
  296. mColArray [10] = "GB"    && cyan
  297. mColArray [11] = "G+"    && light green
  298. mColArray [12] = "G"        && green
  299. mColArray [13] = "B+"    && light blue
  300. mColArray [14] = "B"        && blue
  301. mColArray [15] = "N+"    && grey
  302. mColArray [16] = "N"        && black
  303. STORE 6  TO X1,X2,HoldX,X
  304. STORE 50 TO Y1,Y
  305. STORE 65 TO Y2,HoldY
  306. Forg   = "W+"
  307. Bakg   = "W"
  308. Active = "X"
  309. DO ColDisp WITH Forg,Bakg,Active,X1,X2,Y1,Y2,9,Pass,BDHMW
  310. DO WHILE .T.
  311.    SET CURSOR OFF
  312.    Key = INKEY(0)
  313.    DO CASE
  314.       CASE Key = CurDn .OR. Key = CurUp
  315.          IF Active = "X"
  316.             X = X1
  317.             Y = Y1
  318.          ELSE
  319.             X = X2
  320.             Y = Y2
  321.          ENDIF
  322.          X = IIF(Key = CurDn,X + 1,X - 1)
  323.          X = IIF(Y = 65 .AND. X = 15,6,X)
  324.          X = IIF(Y = 65 .AND. X = 5,14,X)
  325.          X = IIF(Y = 50 .AND. X = 22,6,X)
  326.          X = IIF(Y = 50 .AND. X = 5,21,X)
  327.       CASE Key = CurRight
  328.          SET COLOR TO W+/B
  329.          @ X1,Y1 SAY ""
  330.          SET COLOR TO W+*/B
  331.          @ HoldX,HoldY SAY ""
  332.          X = HoldX
  333.          Y = HoldY
  334.          HoldX = X1
  335.          HoldY = 50
  336.          STORE 65 TO Y2,Y
  337.          Active = "Y"
  338.       CASE Key = CurLeft
  339.          SET COLOR TO W+/B
  340.          @ X2,Y2 SAY ""
  341.          SET COLOR TO W+*/B
  342.          @ HoldX,HoldY SAY ""
  343.          X = HoldX
  344.          Y = HoldY
  345.          HoldX = X2
  346.          HoldY = 65
  347.          STORE 50 TO Y1,Y
  348.          Active = "X"
  349.       CASE Key = Escape
  350.          EXIT
  351.    ENDCASE
  352.    IF Active = "X"
  353.       SET COLOR TO B/B
  354.       @ X1,Y1 SAY " "
  355.       X1 = X
  356.       Y1 = Y
  357.       SET COLOR TO W+*/B
  358.       @ X1,Y1 SAY ""
  359.    ENDIF
  360.    IF Active = "Y"
  361.       SET COLOR TO B/B
  362.       @ X2,Y2 SAY " "
  363.       X2 = X
  364.       Y2 = Y
  365.       SET COLOR TO W+*/B
  366.       @ X2,Y2 SAY ""
  367.    ENDIF
  368.    DoIt = .T.
  369.    IF Active = "Y" .AND. X2 = 14 .AND. Key = Enter
  370.       DoIt       = .F.
  371.       ColFunc    = "N/W"
  372.       ColBlank   = "N/N,N/N,B"
  373.       ColHelp    = "N/G,N/W,B"
  374.       ColData    = "RG+/B,N/W,B"
  375.       ColError   = "W+/R,W+/R,B"
  376.       ColEntry   = "N/W,W+/N,B,"
  377.       ColStand   = "W+/B,N/W,B"
  378.       ColMenu    = "RG+/R,RG+/N,B"
  379.       ColWarning = "N/BG,W+/N,B"
  380.       DO CASE
  381.          CASE BDHMW = 1
  382.             Forg = "W+/"
  383.             Bakg = "B"
  384.          CASE BDHMW = 2
  385.             Forg = "RG+/"
  386.             Bakg = "B"
  387.          CASE BDHMW = 3
  388.             Forg = "N/"
  389.             Bakg = "G"
  390.          CASE BDHMW = 4
  391.             Forg = "RG+/"
  392.             Bakg = "R"
  393.          CASE BDHMW = 5
  394.             Forg = "N/"
  395.             Bakg = "BG"
  396.       ENDCASE
  397.       DO ColDisp WITH Forg,Bakg,Active,X1,X2,Y1,Y2,BDHMW,Pass,BDHMW
  398.    ENDIF
  399.    IF Key = Enter
  400.       SET COLOR TO W+*/R
  401.       @ 17,66 SAY "    SAVING   "
  402.       SAVE TO COLOR ALL LIKE COL*
  403.       DoIt       = .F.
  404.       DO CASE
  405.          CASE BDHMW = 1
  406.             ColStand   = Forg + Bakg + ",N/W,B"
  407.          CASE BDHMW = 2
  408.             ColData    = Forg + Bakg + ",N/W,B"
  409.          CASE BDHMW = 3
  410.             ColHelp    = Forg + Bakg + ",N/W,B"
  411.          CASE BDHMW = 4
  412.             ColMenu    = Forg + Bakg + ",RG+/N,B"
  413.          CASE BDHMW = 5
  414.             ColWarning = Forg + Bakg + ",W+/N,B"
  415.       ENDCASE
  416.       Key = INKEY(3)
  417.       SET COLOR TO W+/B
  418.       @ 17,66 SAY "             "
  419.       EXIT
  420.    ENDIF
  421.    IF DoIt
  422.       IF Key <> Enter
  423.          Forg = mColArray[X1-5] + "/"
  424.          IF X2 < 14
  425.             Bakg = mColArray[(X2-5)*2]
  426.          ENDIF
  427.       ENDIF
  428.       DO CASE
  429.          CASE BDHMW = 1
  430.             ColStand   = Forg + Bakg + ",N/W,B"
  431.          CASE BDHMW = 2
  432.             ColData    = Forg + Bakg + ",N/W,B"
  433.          CASE BDHMW = 3
  434.             ColHelp    = Forg + Bakg + ",N/W,B"
  435.          CASE BDHMW = 4
  436.             ColMenu    = Forg + Bakg + ",RG+/N,B"
  437.          CASE BDHMW = 5
  438.             ColWarning = Forg + Bakg + ",W+/N,B"
  439.       ENDCASE
  440.       DO ColDisp WITH Forg,Bakg,Active,X1,X2,Y1,Y2,BDHMW,Pass,BDHMW
  441.    ENDIF
  442. ENDDO
  443. SET COLOR TO &ColStand
  444. DO NOARROW
  445. RETURN
  446. *END:CLRS.PRG
  447.  
  448.  
  449. *────────────────
  450. PROCEDURE COLDISP
  451. *────────────────
  452. PARAMETERS Forg,Bakg,Active,X1,X2,Y1,Y2,Choice,Pass,BDHMW
  453. NewCol = Forg + Bakg
  454. IF Choice = 1                          && STANDARD COLOR
  455.    SET COLOR TO &NewCol
  456. ELSE
  457.    SET COLOR TO &ColStand
  458. ENDIF
  459. @  3,0 CLEAR TO 23,47
  460. @  3,18      TO  5,33
  461. @  3,0 SAY "║ "
  462. @  4,0 SAY "║ │"
  463. @  5,0 SAY "║ │"
  464. @  6,0 SAY "║ │Customer:"
  465. @  7,0 SAY "║ │"
  466. @  8,0 SAY "║ │Address :"
  467. @  9,0 SAY "║ │"
  468. @ 10,0 SAY "║ │City    :                      State:"
  469. @ 11,0 SAY "║ │"
  470. @ 12,0 SAY "║ │Phone   : (   )   -            Zip  :"
  471. @ 13,0 SAY "╟─│───────────────────────────────────────────"
  472. @ 14,0 SAY "║ │ │                  │"
  473. @ 15,0 SAY "║ │ │                  │"
  474. @ 16,0 SAY "║ │ │                  │"
  475. @ 17,0 SAY "║ │ └─                 │"
  476. @ 18,0 SAY "║ │                   ─┘"
  477. @ 19,0 SAY "║ └───                      "
  478. @ 20,0 SAY "║                           │"
  479. @ 21,0 SAY "║                     ──────┘"
  480. @ 22,0 SAY "║"
  481. @ 23,0 SAY "╚"
  482. @ 23,1 TO 23,47 DOUBLE
  483. @ 4,20 SAY "MAIN HEADING"
  484.  
  485. IF Choice = 2                          && DATA COLOR
  486.    SET COLOR TO &NewCol
  487. ELSE
  488.    SET COLOR TO &ColData
  489. ENDIF
  490. @  6,13 SAY "Phillipps Computer Systems Inc."
  491. @  8,13 SAY "52 Hook Mountain Road"
  492. @ 10,13 SAY "Montville"
  493. @ 10,41 SAY "NJ"
  494. @ 12,14 SAY "201"
  495. @ 12,18 SAY "575"
  496. @ 12,22 SAY "8575"
  497. @ 12,40 SAY " 07045"
  498. SET COLOR TO N+/N
  499. @ 16,42 FILL TO 19,44
  500. @ 19,30 FILL TO 19,44
  501.  
  502. IF Choice = 3                          && HELP COLOR
  503.    SET COLOR TO &NewCol
  504. ELSE
  505.    SET COLOR TO &ColHelp
  506. ENDIF
  507. @ 0,0 SAY "╔═══════════════════════════════════════════════"
  508. @ 1,0 SAY "║     These are the help colors.                "
  509. @ 2,0 SAY "╚═══════════════════════════════════════════════"
  510.  
  511. IF Choice = 4                          && MENU COLOR
  512.    SET COLOR TO &NewCol
  513. ELSE
  514.    SET COLOR TO &ColMenu
  515. ENDIF
  516. @ 14,6 SAY "┌──────────────┐"
  517. @ 15,6 SAY "│     MENU     │"
  518. @ 16,6 SAY "╞══════════════╡"
  519. @ 17,6 SAY "┼─1. Background│"
  520. @ 18,6 SAY "│ 2. Data──────┼"
  521. @ 19,6 SAY "┼─3. Help      │"
  522. @ 20,6 SAY "│ 4. Menu      │"
  523. @ 21,6 SAY "│ 5. Warning───┼"
  524. @ 22,6 SAY "│ 6. Return    │"
  525. @ 23,6 SAY "└──────────────┘"
  526. SET COLOR TO &ColFunc
  527. DO CASE
  528.    CASE BDHMW = 1
  529.       @ 17,8 SAY "1. Background"
  530.    CASE BDHMW = 2
  531.       @ 18,8 SAY "2. Data──────"
  532.    CASE BDHMW = 3
  533.       @ 19,8 SAY "3. Help      "
  534.    CASE BDHMW = 4
  535.       @ 20,8 SAY "4. Menu      "
  536.    CASE BDHMW = 5
  537.       @ 21,8 SAY "5. Warning───"
  538. ENDCASE
  539.  
  540. IF Choice = 5                          && WARNING COLOR
  541.    SET COLOR TO &NewCol
  542. ELSE
  543.    SET COLOR TO &ColWarning
  544. ENDIF
  545. @ 15,28 TO 18,41
  546. @ 16,29 SAY "  Warning   "
  547. @ 17,29 SAY "   Colors   "
  548.  
  549. IF Pass = 1
  550.    Pass = 2
  551.    SET COLOR TO  &ColHelp
  552.    @ 24,0 CLEAR TO 24,79
  553.    @ 24,7  SAY "-return"
  554.    @ 24,19 SAY "-up/down"
  555.    @ 24,33 SAY "-background"
  556.    @ 24,48 SAY "-foreground"
  557.    @ 24,65 SAY "-reset/save"
  558.    SET COLOR TO  &ColFunc
  559.    @ 24,4 SAY "ESC"
  560.    @ 24,17 SAY ""
  561.    @ 24,32 SAY CHR(26)                 && -
  562.    @ 24,47 SAY CHR(27)                 && -
  563.    @ 24,61 SAY "──┘"
  564.    SET COLOR TO W+/B,W+/B,B,B          && CHOICES
  565.    @ 0,48 CLEAR TO 23,79
  566.    @ 0,48       TO 23,79
  567.    @  0,48 SAY "╒════════ SCREEN COLOR ════════╕"
  568.    @  2,52 SAY "SELECT COLORS COMBINATIONS"
  569.    @  4,52 SAY "Foreground     Background"
  570.    @  5,52 SAY "──────────     ──────────"
  571.    SET COLOR TO W+/B
  572.    @  6,52 SAY "HI WHITE     "
  573.    Forg = "W+"
  574.    SET COLOR TO W/B
  575.    @  7,52 SAY "WHITE        "
  576.    Forg = "W"
  577.    SET COLOR TO RG+/B
  578.    @  8,52 SAY "HI YELLOW    "
  579.    Forg = "RG+"
  580.    SET COLOR TO RG/B
  581.    @  9,52 SAY "BROWN        "
  582.    Forg = "RG"
  583.    SET COLOR TO RB+/B
  584.    @ 10,52 SAY "HI MAGENTA   "
  585.    Forg = "RB+"
  586.    SET COLOR TO RB/B
  587.    @ 11,52 SAY "MAGENTA      "
  588.    Forg = "RB"
  589.    SET COLOR TO R+/B
  590.    @ 12,52 SAY "HI RED       "
  591.    Forg = "R+"
  592.    SET COLOR TO R/B
  593.    @ 13,52 SAY "RED          "
  594.    Forg = "R"
  595.    SET COLOR TO GB+/B
  596.    @ 14,52 SAY "HI CYAN      "
  597.    Forg = "GB+"
  598.    SET COLOR TO GB/B
  599.    @ 15,52 SAY "CYAN         "
  600.    Forg = "GB"
  601.    SET COLOR TO G+/B
  602.    @ 16,52 SAY "HI GREEN     "
  603.    Forg = "G+"
  604.    SET COLOR TO G/B
  605.    @ 17,52 SAY "GREEN        "
  606.    Forg = "G"
  607.    SET COLOR TO B+/B
  608.    @ 18,52 SAY "HI BLUE      "
  609.    Forg = "B+"
  610.    SET COLOR TO B/B
  611.    @ 19,52 SAY "BLUE         "
  612.    Forg = "B"
  613.    SET COLOR TO N+/B
  614.    @ 20,52 SAY "HI BLACK     "
  615.    Forg = "N+"
  616.    SET COLOR TO N/B
  617.    @ 21,52 SAY "BLACK        "
  618.    Forg = "N"
  619.    SET COLOR TO  /W
  620.    Bakg = "W"
  621.    @  6,66 SAY "WHITE       "
  622.    SET COLOR TO  /RG
  623.    Bakg = "RG"
  624.    @  7,66 SAY "BROWN       "
  625.    SET COLOR TO  /RB
  626.    Bakg = "RB"
  627.    @  8,66 SAY "MAGENTA     "
  628.    SET COLOR TO  /R
  629.    Bakg = "R"
  630.    @  9,66 SAY "RED         "
  631.    SET COLOR TO  /GB
  632.    Bakg = "GB"
  633.    @ 10,66 SAY "CYAN        "
  634.    SET COLOR TO  /G
  635.    Bakg = "G"
  636.    @ 11,66 SAY "GREEN       "
  637.    SET COLOR TO  /B
  638.    Bakg = "B"
  639.    @ 12,66 SAY "BLUE        "
  640.    SET COLOR TO  /N
  641.    Bakg = "N"
  642.    @ 13,66 SAY "BLACK       "
  643.    SET COLOR TO N/W
  644.    @ 14,66 SAY "RESET ORIG."
  645. ENDIF
  646. IF Active = "X"
  647.    SET COLOR TO W+*/B
  648.    @ X1,Y1 SAY ""
  649.    SET COLOR TO W+/B
  650.    @ X2,Y2 SAY ""
  651. ELSE
  652.    SET COLOR TO W+*/B
  653.    @ X2,Y2 SAY ""
  654.    SET COLOR TO W+/B
  655.    @ X1,Y1 SAY ""
  656. ENDIF
  657. SET CURSOR OFF
  658. RETURN
  659. *EOF:COLDISP
  660.  
  661.  
  662. *────────────────
  663. PROCEDURE NOARROW    && cleans out the arrow on screen ...
  664. *────────────────
  665. SET COLOR TO W+/B
  666. X = 5
  667. DO WHILE X < 22
  668.    X = X + 1
  669.    @ X,50 SAY " "
  670.    IF X < 15
  671.       @ X,65 SAY " "
  672.    ENDIF
  673. ENDDO
  674. RETURN
  675. *END:NOARROR
  676.